import { IPSDELogicNodeParamBase } from './ipsdelogic-node-param-base';
import { IPSDELogicParam } from './ipsdelogic-param';
import { IPSSysSequence } from '../../res/ipssys-sequence';
import { IPSSysTranslator } from '../../res/ipssys-translator';

/**
 *
 * 子接口类型识别属性[]
 * @export
 * @interface IPSDELogicNodeParam
 */
export interface IPSDELogicNodeParam extends IPSDELogicNodeParamBase {
  /**
   * 目标逻辑参数
   *
   * @type {IPSDELogicParam}
   */
  getDstPSDELogicParam(): IPSDELogicParam | null;

  /**
   * 目标逻辑参数
   *
   * @type {IPSDELogicParam}
   */
  get dstPSDELogicParam(): IPSDELogicParam | null;

  /**
   * 目标逻辑参数（必须存在）
   *
   * @type {IPSDELogicParam}
   */
  getDstPSDELogicParamMust(): IPSDELogicParam;

  /**
   * 表达式
   * @type {string}
   */
  expression: string;

  /**
   * 系统值序列对象
   *
   * @type {IPSSysSequence}
   */
  getPSSysSequence(): IPSSysSequence | null;

  /**
   * 系统值序列对象
   *
   * @type {IPSSysSequence}
   */
  get psSysSequence(): IPSSysSequence | null;

  /**
   * 系统值序列对象（必须存在）
   *
   * @type {IPSSysSequence}
   */
  getPSSysSequenceMust(): IPSSysSequence;

  /**
   * 系统值转换器对象
   *
   * @type {IPSSysTranslator}
   */
  getPSSysTranslator(): IPSSysTranslator | null;

  /**
   * 系统值转换器对象
   *
   * @type {IPSSysTranslator}
   */
  get psSysTranslator(): IPSSysTranslator | null;

  /**
   * 系统值转换器对象（必须存在）
   *
   * @type {IPSSysTranslator}
   */
  getPSSysTranslatorMust(): IPSSysTranslator;

  /**
   * 源逻辑参数
   *
   * @type {IPSDELogicParam}
   */
  getSrcPSDELogicParam(): IPSDELogicParam | null;

  /**
   * 源逻辑参数
   *
   * @type {IPSDELogicParam}
   */
  get srcPSDELogicParam(): IPSDELogicParam | null;

  /**
   * 源逻辑参数（必须存在）
   *
   * @type {IPSDELogicParam}
   */
  getSrcPSDELogicParamMust(): IPSDELogicParam;

  /**
   * 值输出转换
   * @type {boolean}
   * @default false
   */
  outTranslate: boolean;
}
